package sv.com.renacempleo.dao.red;

import java.util.Collections;
import java.util.List;
import java.util.Map;

import sv.com.renacempleo.dao.BaseDaoImpl;
import sv.com.renacempleo.exception.WebException;
import sv.com.renacempleo.web.util.WebUtilidades;

public class RedDiscapacidadDaoImpl extends BaseDaoImpl implements RedDiscapacidadDao{
	
	@SuppressWarnings("unchecked")
	public Map<String, Object> findRedDiscapacidadFisicoPsiquicoByRedDemandanteIdAsMap(Long redOfertaId) throws WebException{
		String hqlQuery = WebUtilidades.getQueryByName("redFisicoPsiquico.findByRedDemandanteId");
		if(redOfertaId == null) redOfertaId = 0L;
		try {
			List<Object[]> list = (List<Object[]>) findByHQLQuery(hqlQuery, new Object[]{redOfertaId});
			if(WebUtilidades.isEmptyList(list)) return null;
			return toMap(list.get(0), new String[]{
				"redFisicoPsiquico.redFisicoPsiquicoId",
				"redFisicoPsiquico.redFisicoPsiquicoPosturaDePie",
				"redFisicoPsiquico.redFisicoPsiquicoPosturaSentado",
				"redFisicoPsiquico.redFisicoPsiquicoPosturaOtra",
				"redFisicoPsiquico.redFisicoPsiquicoLocomocionCaminar",
				"redFisicoPsiquico.redFisicoPsiquicoLocomocioEscaleras",
				"redFisicoPsiquico.redFisicoPsiquicoLocomocioTransportar",
				"redFisicoPsiquico.redFisicoPsiquicoExtremidadSuperiorMovimientoIzq",
				"redFisicoPsiquico.redFisicoPsiquicoExtremidadSuperiorMovimientoDer",
				"redFisicoPsiquico.redFisicoPsiquicoExtremidadSuperiorFuerzaIzq",
				"redFisicoPsiquico.redFisicoPsiquicoExtremidadSuperiorFuerzaDer",
				"redFisicoPsiquico.redFisicoPsiquicoExtremidadSuperiorPrecionIzq",
				"redFisicoPsiquico.redFisicoPsiquicoExtremidadSuperiorPrecionDer",
				"redFisicoPsiquico.redFisicoPsiquicoExtremidadInferiorMovimientoIzq",
				"redFisicoPsiquico.redFisicoPsiquicoExtremidadInferiorMovimientoDer",
				"redFisicoPsiquico.redFisicoPsiquicoAudicionCapacidadIzq",
				"redFisicoPsiquico.redFisicoPsiquicoAudicionCapacidadDer",
				"redFisicoPsiquico.redFisicoPsiquicoAudicionHablar",
				"redFisicoPsiquico.redFisicoPsiquicoVisionProximaIzq",
				"redFisicoPsiquico.redFisicoPsiquicoVisionProximaDer",
				"redFisicoPsiquico.redFisicoPsiquicoVisionLejanaIzq",
				"redFisicoPsiquico.redFisicoPsiquicoVisionLejanaDer",
				"redFisicoPsiquico.redFisicoPsiquicoVisionColoresIzq",
				"redFisicoPsiquico.redFisicoPsiquicoVisionColoresDer",
				"redFisicoPsiquico.redFisicoPsiquicoVisionPerspectivaIzq",
				"redFisicoPsiquico.redFisicoPsiquicoVisionPerspectivaDer",
				"redFisicoPsiquico.redFisicoPsiquicoAtencion",
				"redFisicoPsiquico.redFisicoPsiquicoMemoria",
				"redFisicoPsiquico.redFisicoPsiquicoDecision",
				"redFisicoPsiquico.redFisicoPsiquicoEstabilidadEmocional"
			});
		} catch (Exception e) {
			logger.error(e, e);
			throw new WebException("Problemas a tratar de obtener la informaci\u00F3n");
		}
	}
	
	@SuppressWarnings("unchecked")
	public Map<String, Object> findRedDiscapcidadTrabajoByRedDemandanteIdAsMap(Long redDemandanteId) throws WebException{
		String hqlQuery = WebUtilidades.getQueryByName("redTrabajo.findByRedDemandanteId");
		if(redDemandanteId == null) redDemandanteId = 0L;
		try {
			List<Object[]> list = (List<Object[]>) findByHQLQuery(hqlQuery, new Object[]{redDemandanteId});
			if(WebUtilidades.isEmptyList(list)) return null;
			return toMap(list.get(0), new String[]{
				"redDiscapacidadTrabajo.redTrabajoId",
				"redDiscapacidadTrabajo.redTrabajoIndividual",
				"redDiscapacidadTrabajo.redTrabajoGrupal",
				"redDiscapacidadTrabajo.redTrabajoMaquinaAutomatica",
				"redDiscapacidadTrabajo.redTrabajoMaquinaManual",
				"redDiscapacidadTrabajo.redTrabajoMaquinaRitmo",
				"redDiscapacidadTrabajo.redTrabajoRuido",
				"redDiscapacidadTrabajo.redTrabajoIluminacion",
				"redDiscapacidadTrabajo.redTrabajoVentilacion",
				"redDiscapacidadTrabajo.redTrabajoTemperatura",
				"redDiscapacidadTrabajo.redTrabajoHumedad",
				"redDiscapacidadTrabajo.redTrabajoPolvo",
				"redDiscapacidadTrabajo.redTrabajoVibracion",
				"redDiscapacidadTrabajo.redTrabajoOtrasHabilidades",
				"redDiscapacidadTrabajo.redTrabajoAyudaTecnicaOtro"				
			});
		} catch (Exception e) {
			logger.error(e, e);
			throw new WebException("Problemas a tratar de obtener la informaci\u00F3n");
		}
	}
	
	
	@SuppressWarnings("unchecked")
	public List<Object[]> findRedDiscapacidadAyudaTecnicaByRedDemandateId(Long redDemandanteId){
		String hqlQuery = WebUtilidades.getQueryByName("redDiscapacidadAyudaTecnica.findByRedDemandanteId");
		if(redDemandanteId == null) redDemandanteId = 0L;
		try {
			return (List<Object[]>) findByHQLQuery(hqlQuery, new Object[]{redDemandanteId});
		} catch (WebException e) {
			logger.error(e, e);
		}
		return Collections.emptyList();
	}
	
}
